#举个例子，我们来计算阶乘 n! = 1 * 2 * 3 * ... * n
#不使用递归的方法：
n = 4 #求4的阶乘
result = 1
i = 1
while i<= 4:
    result = result * i
    i += 1
print(result)

#使用递归的方法：
def test1(n):#定义函数来计算数字n的阶乘
    if n == 1:
        return 1
    return n * test1(n-1)

print(test1(5))
#1.在函数的内部调用自己本身
#2.递归函数本质是一个方法的循环调用，注意：有可能出现死循环
#3.一定要定义递归的边界（什么时候退出循环）

#斐波纳契数列：1，1，2，3，5，8，13。。。（该数列中，有n个数字，从第三个数字开始：数值 =前一个数字 + 前面一个数字）

#即，n=(n-2)+(n-1)

def get_num(n):#获取斐波拉契数列中第n个数字的值
    if n == 1 or n == 2:
        return 1
    return get_num(n-1)+get_num(n-2)

#把获取的斐波拉契数字存到列表中
nums = []
for i in range(1,21):
    nums.append(get_num(i))#get_num获得一个斐波拉契数字

print(nums)